package cn.net.csit.platform_cloud.basicmodel.mapper;

import cn.net.csit.platform_cloud.base.PtColumnModel;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
@Mapper
public interface BackupDataMapper {
    /**
     *
     * 增加表字段
     *
     * @Title:addColumns
     *
     * @Params:@param tableName 表名
     *
     * @Params:@param columnNameList 字段集合
     *
     * @Params:@return 执行结果
     *
     * @Return:int[]
     *
     * @Time:2019年3月28日
     *
     * @Author:yanwenjuan
     *
     * @Description:增加表字段
     *
     *
     */
     void addColumns(@Param("tableName") String tableName,@Param("columnNameList")  List<PtColumnModel> columnNameList);

    void addColumnList(@Param("tableName") String tableName,@Param("columnNameList")  List<String> columnNameList);


    /**
     *
     * 删除表字段
     *
     * @Title:delColumns
     *
     * @Params:@param tableName 表名
     *
     * @Params:@param columnNameList 字段集合
     *
     * @Params:@return 执行结果
     *
     * @Return:int[]
     *
     * @Time:2019年3月28日
     *
     * @Author:yanwenjuan
     *
     * @Description:删除表字段
     *
     *
     */
     void delColumns(@Param("tableName") String tableName,@Param("columnNameList")  List<String> columnNameList);
    /**
     * 新增数据库的表
     * @param newTableName
     */
    void createNullTable(@Param("newTableName") String newTableName);


    /**
     * 删除数据库的表
     * @param tableName
     */
    void deleteTable(@Param("tableName") String tableName);
    /**
     * 修改数据库的表名字
     * @param originalTableName
     * @param newTableName
     * @return
     */
    int alterTableName(@Param("originalTableName") String originalTableName,
                       @Param("newTableName") String newTableName);

    /**
     * truncate清空指定数据库表的数据
     * @param tableName
     * @return
     */
    int truncateTable(@Param("tableName") String tableName);


    /**
     * 根据传入的表名，创建新的表并且将原表的数据插入到新的Occur表中
     * @param newTableName
     * @param originalTableName
     */
    void createNewTableAndInsertData(@Param("newTableName") String newTableName,
                                     @Param("originalTableName") String originalTableName);

    /**
     * 动态创建数据库的表
     * @param newTableName
     *@param columns
     */
    void createTable(@Param("newTableName") String newTableName, @Param("columns") List<Map<String, String>> columns);




    /**
     * 从指定数据库中，查询是否存在某张表
     * @param dataBaseName
     * @param tableName
     * @return
     */
    String isTargetTableExistInDB(@Param("dataBaseName") String dataBaseName,
                                  @Param("tableName") String tableName);
    /**
     * 统计某张表中的总数据条数。
     * @param tableName
     * @return 指定表中的总记录条数。
     */
    int getRecordCount(@Param("tableName") String tableName);

    /**
     * 获得当前数据库的名字
     * @return
     */
    String getCurDataBaseName();
    /**
     * 传入sql查询任意数据
     * @return
     */
    List<Map<String,String>> customQueryItem( @Param("sqlContent") StringBuilder sqlContent);
}
